/* Opciones de Cabecera */
header{ package pl.equipo13.p6; }
/* Analizador lexico */
class AnalexC extends Lexer;
options{
 	importVocab = AnasintC;
 	k = 2;
    charVocabulary = '\3'..'\377';
}

/* Palabras reservadas */
tokens{
	WHILE = "while";
	IF = "if";
	VOID = "void";
	INT = "int";
	BREAK = "break";
	CHAR = "char";
	FLOAT = "float";
}

protected NUEVA_LINEA : ('\n' | "\r\n")  {newline();};
protected LETRA : ('A'..'Z') | ('a'..'z') | ('_');
protected DIGITO : '0'..'9';
protected MAYOR: '>';
protected MENOR: '<';
protected ASTERISCO: '*';
protected SLASH: '/';
protected MAS: '+';
protected GUION: '-';
protected COMILLAS: '"';
protected ASPERSAN: '&';
protected BARRA: '|';
protected COMILLASIMPLE: "'";
NEGADO: '!';
IFARIT: '?';
CADENA: COMILLAS (options { greedy=false; }:.)* COMILLAS;
IGUAL: '=';
DOSPUNTOS: ':';
SEPARADOR: ';';
COMA: ',';
protected MAYORIGUAL: MAYOR IGUAL;
protected MENORIGUAL: MENOR IGUAL;
protected AND: ASPERSAN ASPERSAN;
protected OR: BARRA BARRA;
CAMBIOSIGNO: GUION;

BLANCO : (' '|'\t'|NUEVA_LINEA) {$setType(Token.SKIP);};

APARENTESIS: '(';
CPARENTESIS: ')';
ALLAVE: '{';
CLLAVE: '}';

IDENT : LETRA(LETRA|DIGITO)*;
NUMERO : ((DIGITO)+ '.') => (DIGITO)+ '.' (DIGITO)* { $setType(LIT_REAL); } |
                            (DIGITO)+ { $setType(LIT_ENTERO); };
CARACTER: COMILLASIMPLE (LETRA | DIGITO) COMILLASIMPLE;

OPERADORCOMPARAR: MAYOR | MENOR | MAYORIGUAL | MENORIGUAL | AND | OR | NEGADO;
OPERADORMULDIV: ASTERISCO | SLASH;
OPERADORSUMRES: MAS | GUION;